package model;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Reservation implements Iterable<LigneReservation>{
	private Client client = null;
	private List<LigneReservation> lignesReservation;
	private int numConfirmation;
	
	public Reservation() {
		super();
		lignesReservation = new ArrayList<LigneReservation>();
	}

	/**
	 * @return le client
	 */
	public Client getClient() {
		return client;
	}

	/**
	 * @return le numConfirmation
	 */
	public int getNumConfirmation() {
		return numConfirmation;
	}
	
	/**
	 * 
	 * @param index l'endroit ou se trouve la ligne desire
	 * @return la LigneReservation desire dans lignesReservation
	 */
	public LigneReservation getLigneRes(int index){
		return lignesReservation.get(index);
	}

	/**
	 * @param client le client a enregistrer
	 */
	public void setClient(Client client) {
		this.client = client;
	}

	/**
	 * @param numConfirmation le numConfirmation a enregistrer
	 */
	public void setNumConfirmation(int numConfirmation) {
		this.numConfirmation = numConfirmation;
	}
	
	/**
	 * @param reservation la LigneReservation a ajouter
	 * @return true si la collection a ete modife par le add
	 */
	public boolean addLigneReservation(LigneReservation reservation){
		return lignesReservation.add(reservation);
	}
	
	/**
	 * 
	 * @param index la position ou on remplace la ligne
	 * @param reservation la LigneReservation modifiee
	 */
	public void replaceLigneReservation(int index, LigneReservation reservation){
		lignesReservation.remove(index);
		lignesReservation.add(index,reservation);
	}
	
	/**
	 * Cree un sejour
	 * @param indexChambre
	 * @param indexLingeRes
	 * @return
	 */
	public Sejour creerSejour(int indexChambre, int indexLingeRes){		
		Chambre tempChambre = Agenda.getInstance().getChambreDispoAtIndex(getLigneRes(indexLingeRes).getCategorieChambre(),
				getLigneRes(indexLingeRes).getDateArrive(), getLigneRes(indexLingeRes).getDateDepart(), indexChambre);
		
		int tempNumConf = (numConfirmation * 10);
		
		return new Sejour(tempNumConf, tempChambre, 
				getLigneRes(indexLingeRes).getDateArrive(), 
				getLigneRes(indexLingeRes).getDateDepart(),
				client);
	}

	/**
	 * @return l'iterator de lignesReservation
	 */
	public Iterator<LigneReservation> iterator() {
		return lignesReservation.iterator();
	}
	
	
}
